/*-----------------------------------------------File Info------------------------------------------------
** File Name:               SC12B.h
** Last modified date:      2016.07.22
** Last version:            V0.1
** Description:             
**--------------------------------------------------------------------------------------------------------            
** Created date:            2016.09.07
** author:                  YLY
** Version:                 V0.1
** Descriptions:            键盘扫描处理函数
**--------------------------------------------------------------------------------------------------------
*/

#ifndef _SC12B_H_
#define	_SC12B_H_
#include "userConfig.h"

#define SCERR GLOBAL_ERR
#ifndef SCERR
	#define SCERR(...)
#endif

#define SCDBG GLOBAL_DBG
#ifndef SCDBG
	#define SCDBG(...)
#endif

///////////////////////////Register ADDR////////////////////////////////////////////////////////////////////////////
#define SenSet0_REG         0x00                //SC12B为对应CIN3 通道灵敏度的设置地址 
										        //SC09B SC05B为对应硬件CIN0 通道灵敏度的设置地址
#define SenSetCOM_REG       0x01                //其他通道灵敏度的设置地址
#define CTRL0_REG           0x02                //CTRL0 控制寄存器设置地址
#define CTRL1_REG 			0x03                //CTRL1 控制寄存器设置地址
#define Output_REG 			0x08                //触摸状态寄存器输出地址
#define SAMP_REG_H 			0x0A                //触摸数据值存器输出地址
#define SAMP_REG_L 			0x0A                //触摸数据值存器输出地址

#define RTM0 				0 					//3 个采样周期有效， 1 个采样周期判断无效
#define RTM1 				1 					//4 个采样周期有效， 2 个采样周期判断无效
#define RTM2 				2 					//5 个采样周期有效， 3 个采样周期判断无效
#define RTM3				3 					//6 个采样周期有效， 4 个采样周期判断无效

#define KVF_STOP_CORREC 	(1u<<2)				// 按键有效，触摸不校准
#define KVF_50S_CORREC 		(0u<<2) 			// 按下有效后， 50S 开始校准

#define HOLD 				(1u<<3) 			//基线保持不校准
#define NOTHOLD 			(0u<<3) 			//基线持续校准

#define SLPCYC_LGT 			(0u<<5) 			//无穷大
#define SLPCYC_0R5T 		(1u<<5) 			//休眠后采样间隔 60MS
#define SLPCYC_1R5T 		(2u<<5) 			//休眠后采样间隔 180MS
#define SLPCYC_2R5T 		(3u<<5) 			//休眠后采样间隔 300MS
#define SLPCYC_3R5T 		(4u<<5) 			//休眠后采样间隔 420MS
#define SLPCYC_4R5T 		(5u<<5) 			//休眠后采样间隔 540MS
#define SLPCYC_5R5T 		(6u<<5) 			//休眠后采样间隔 660MS
#define SLPCYC_6R5T			(7u<<5) 			//休眠后采样间隔 780MS

#define FAST_TO_SLEEP 		(1u<<4) 			//快速进入休眠
#define SLOW_TO_SLEEP 		(0u<<4) 			// 75S 进入休眠


/////////B版本对应地址//////////////////
//早期芯片ASEL已经未使用，全是0x40
#define SC12B_ADDRO    		0x40               //ASEL 引脚悬空，设备的地址			
#define SC12B_ADDRL   		0x42               //ASEL 引脚为低电平，设备的地址
#define SC12B_ADDRH   		0x44               //ASEL 引脚为高电平，设备的地址
#define SC09B_ADDR    		0x40               //SC09B 只有一个固定地址
#define SC05B_ADDR    		0x41               //SC05B 只有一个固定地址

typedef enum{
	SC_IDLE,
	SC_FAIL,
	SC_SUCCESS
}teScFeedback;


/* External varialbles -------------------------------------------------------*/
extern bool sc12bInit(void);
extern uint8_t readSc12bValue(uint8_t *pBuf);

#endif	//	_SC12B_H_








